﻿/**
 * Created by arvin on 2017/3/28.
 */
var Mongoose = require('mongoose');
var Logger = require("pomelo-logger").getLogger("pomelo", "MotionDevices")

var Table={
    MotionDevice:{type:String,index: -1},
    MotionName:{type:String,index:-1},
    MotionState:{type:Number,default:0},//设备状态，0是待机，1，是正在使用，2是不可用，
    UsedTime:{type:Number,default:0},// 这个设备使用了多少次
    MovieHouse:{type:String,index:-1},// 电影院名字ume/free
    MovieAddress:{type:String,index:-1},// 电影院地址
    Contacts:{type:String,index:-1},//联系人
    ContactsNumber:{type:String,index:-1},//联系电话
    Expired: {type: Date}
};

var SchemaOption={};
var Schema = new Mongoose.Schema(Table,SchemaOption);
Schema.set('redisCache','MotionDevices');
Schema.set('expire', 60000);

Schema.statics.invalidate = function (MotionDevice,cb) {

    this.findOne({MotionDevice:MotionDevice},function (e,d) {
        if(e|| !d)
        {
            // 没查询到，表示没有这个机器
            console.log("没有查询到数据："+ MotionDevice);
            cb(false);
        }
        else
        {
            // 找到这个设备
            cb(true);
        }
    });
}

Schema.statics.addMotionDev= function(dev,cb)
{
    this.collection.insert({
        MotionDevice: dev.MotionDevice,
        MotionName: dev.MotionName,
        Expired: [new Date],
        MotionState:0,
        UsedTime:0
    },function (err,result) {
        if(err)
        {
            cb(false);
            console.log("新设备插入失败");
        }
        else
        {
            cb(true);
            console.log("新设备插入成功");
        }
        console.log(result);
    })
}

Schema.statics.UpdateMotionInfo = function (dev,cb) {
    this.findOne(
        {MotionDevice:dev.MotionDevice},function (e,d) {
            if (e || !d) {
                console.log("找不这个设备信息");
                cb(false);
                return;
            }

            d.MotionName = dev.MotionName;
            d.MovieHouse = dev.MovieHouse;
            d.MovieAddress= dev.MovieAddress;

            d.save( function ( e ) {
                if (e)
                {
                    console.log("更新设备信息失败")
                    cb(false);
                }
                else
                {
                    cb(true);
                    console.log("更新设备信息成功")
                }
            } );
        }
    )
}

Schema.statics.UpdateMotionState = function (dev,cb) {
    this.findOne(
        {MotionDevice:dev.MotionDevice},function (e,d) {
            if (e || !d) {
                console.log("找不这个设备信息");
                cb(false);
                return;
            }
            d.MotionState = dev.MotionState;
            if(d.MotionState ==1)// 如果状态正在使用，表示使用了一次
                d.UsedTime++;

            d.save(function (e) {
                if (e) {
                    console.log("保存状态失败",  d.MotionState)
                } else
                    console.log("保存状态成功",  d.MotionState)
            })

            console.log("更新机器信息："+d.MotionDevice +"状态：" +d.MotionState);
            cb(true);
        }
    );
}

Schema.statics.GetMotionState=function(motion,cb)
{
    this.findOne(
        {MotionDevice:motion},function (e,d) {
            if(e || !d)
            {
                console.log("找不这个设备信息");
                return;
            }
            cb(d.MotionState);
        }
    );
}

Schema.statics.delMotionDev =function (dev,cb) {
    this.collection.remove({
        MotionDevice: dev
    },function (err,result) {
        if(err)
        {
            cb(false);
            console.log("删除失败");
        }
        else
        {
            cb(true);
            console.log("删除成功");
        }
    })
}

Schema.statics.GetDeviceData = function (dev,cb) {
    this.findOne(
        {MotionDevice:dev},function (e,d) {
            if(e || !d)
                cb(null)
            else
                cb(d);
        }
    );
}

module.exports = {
    "name": "MotionDevices",
    "schema": Schema
};